home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / memclr.s < prev    next >
Text File  |  1997-11-28  |  1KB  |  97 lines

  1.  
  2. ; Grab all available memory into a buffer:
  3.  
  4.  include workbench:sysinc/exec/exec_lib.i
  5.  
  6.  move.l #65536,d7
  7.  move.l #tab,a0
  8.  
  9. getmemlop:
  10.  movem.l d7/a0,-(a7)
  11.  move.l d7,d0
  12.  moveq.l #1,d1    ; chipmem
  13.  move.l 4.w,a6
  14.  jsr -198(a6) 
  15.  movem.l (a7)+,d7/a0
  16.  
  17.  tst.l d0
  18.  beq.s gotitall
  19.  move.l d0,(a0)+
  20.  add.l d7,d0
  21.  move.l d0,(a0)+
  22.  bra.s getmemlop
  23.  
  24. gotitall:
  25.  sub.l #1024,d7
  26.  bgt.s getmemlop
  27.  
  28.  move.l #-1,(a0)+
  29.  
  30. ; Group memory into large chunks
  31.  
  32. ; bra nogroup
  33.  
  34.  move.l #tab,a0
  35. group:
  36.  move.l (a0),d0
  37.  blt.s groupedall
  38.  beq.s thisonedone
  39.  move.l 4(a0),d1
  40.  lea 8(a0),a1
  41.  
  42. findnext:
  43.  move.l (a1),d2
  44.  blt.s foundall
  45.  beq.s notthisone
  46.  cmp.l d1,d2
  47.  bgt.s notthisone
  48.  cmp.l 4(a1),d1
  49.  bgt.s notthisone
  50.  move.l 4(a1),d1
  51. ignore:
  52.  move.l #0,(a1)
  53.  move.l #0,4(a1)
  54.  lea 8(a0),a1
  55. notthisone:
  56.  addq #8,a1
  57.  bra.s findnext
  58.  
  59. foundall:
  60.  move.l d1,4(a0)
  61.  
  62. thisonedone:
  63.  addq #8,a0
  64.  bra.s group
  65.  
  66. groupedall:
  67.  
  68. ; release memory to system
  69.  
  70. nogroup:
  71.  
  72. ; btst #7,$bfe001
  73. ; bne.s nogroup
  74.  
  75.  move.l #tab,a0
  76. rellop:
  77.  move.l (a0),d1
  78.  blt.s relall
  79.  beq.s norelthis
  80.  move.l 4(a0),d0
  81.  move.l d1,a1
  82.  sub.l d1,d0
  83.  move.l a0,-(a7)
  84.  CALLEXEC FreeMem
  85.  move.l (a7)+,a0
  86. norelthis:
  87.  addq #8,a0
  88.  bra.s rellop
  89.  
  90. relall:
  91.  rts
  92.  
  93. tab:
  94.  ds.l 2000
  95.  
  96.  
  97.